Crate const_generic_wrap[−][src]
Expand description
Simple wrapper for const generics.
Usage
Currently ‘the type of const parameters must not depend on other generic parameters’ (E0770).
ⓘ
struct A<N, const C : N>(N);
With this crate we can solve this by wrapping cosnt generic.
use const_generic_wrap::*; struct A<N, C>(N, C) where C : ConstWrap<BaseType = N>; // WrapU32 is ZST, so the size of A is as same as u32. assert_eq!(mem::size_of::<WrapU32<12>>(), 0); assert_eq!(mem::size_of::<A::<u32, WrapU32<12>>>(), mem::size_of::<u32>()); // you can selectively use const or non const struct B<N, C>(N, C) where C : ConstOrValue<N>, N : Constable; // or it can be C : Into<N> fn add_b<N, C>(v : B<N, C>) -> N where N : Add<Output = N> + Constable, C : ConstOrValue<N>{ v.0 + v.1.into() } let b_non_const = B(31, 11); let b_const = B(31, WrapI32::<11>); assert_eq!(add_b(b_non_const), add_b(b_const));
Structs
Failed to convert to const wrap type.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Const generic wrapper.
Traits
A lists of types for a specified values.
Trait that can be a wrapped const generic or a owned value.
Marker that shows it wraps const generic.
Marker that shows it can be used in const generic.